package lxarray

// InArray 判断字符串在数组内
func InArray(s string, d []string) bool {
	for _, v := range d {
		if s == v {
			return true
		}
	}
	return false
}

// SplitArray sources源数组，num拆分份数，size每份的大小
func SplitArray(sources []string, num, pageSize int64) [][]string {
	max := int64(len(sources))
	if max < num {
		return nil
	}
	var segmens = make([][]string, 0)
	quantity := pageSize
	end := int64(0)
	for i := int64(1); i <= num; i++ {
		qu := i * quantity
		if i != num {
			segmens = append(segmens, sources[i-1+end:qu])
		} else {
			segmens = append(segmens, sources[i-1+end:])
		}
		end = qu - i
	}
	return segmens
}

// SplitArrayCnt sourceslen源数组长度，pageSize页数据量
func SplitArrayCnt(sourceslen, pageSize int) int {
	if sourceslen < pageSize {
		return 1
	}
	s := sourceslen / pageSize
	y := sourceslen % pageSize
	if y > 0 {
		return s + 1
	} else {
		return s
	}
}

// DeleteRepeatString 数组去重
func DeleteRepeatString(arr []string) []string {
	// 创建一个新的切片，用于存储去重后的元素
	result := make([]string, 0, len(arr))
	// 遍历原始数组
	for _, item := range arr {
		// 如果元素不在结果切片中，则将其添加到结果切片中
		if !containsString(result, item) {
			result = append(result, item)
		}
	}
	return result
}

func containsString(arr []string, se string) bool {
	// 遍历结果切片
	for _, n := range arr {
		// 如果找到匹配的元素，则返回 true
		if n == se {
			return true
		}
	}
	return false
}
